package com.huayue.dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Component;

import com.huayue.util.PageHelper;

/**
 * Dao层模板接口
 *
 */
@Component
public interface BaseDao<T> {
    /**
     * 添加方法
     * 
     * @param entity
     * @return
     */
    public int insert(T entity);

    /**
     * 修改方法
     * 
     * @param entity
     * @return
     */
    public int update(T entity);

    /**
     * 删除方法
     * 
     * @param entity
     * @return
     */
    public int delete(T entity);

    /**
     * 查询方法 传入可变参数
     * 
     * @param obj
     * @return
     */
    public List<Map<String, Object>> findAll(Object... obj);

    /**
     * 分页查询方法 传入分页对象和可变参数 分页对象用于分页查询 可变参数用于增加条件
     * 
     * @param page
     * @param obj
     * @return
     */
    public List<Map<String, Object>> findPage(PageHelper page, Object... obj);

    /**
     * 查询一条数据 通常对象中只需存有id
     * 
     * @param entity
     * @return
     */
    public Map<String, Object> findOne(T entity);

    /**
     * 查询总条数 传入可变参数，用于增加条件
     * 
     * @param obj
     * @return
     */
    public int count(Object... obj);
}
